/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.com.transporte.dao.imp;

import ar.com.transporte.config.HibernateUtil;
import ar.com.transporte.dao.UsuarioDao;
import ar.com.transporte.dominio.Usuario;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Vane
 */
public class UsuarioDaoImp implements UsuarioDao{

    public List<Usuario> getAll() {
        List<Usuario> lista = null;
        try{
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria criteria = session.createCriteria(Usuario.class);
            lista = criteria.list();
           //session.close();
        }catch(Exception e){}
        return lista;
    }
    public List<Usuario> getAll(int maxResults, int firstResult) {
        List<Usuario> lista = null;
        try{
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria criteria = session.createCriteria(Usuario.class);
            criteria.setFirstResult(firstResult);
            criteria.setMaxResults(maxResults);
            lista = criteria.list();
           //session.close();
        }catch(Exception e){}
        return lista;
    }
    public Usuario getItem(int id) {
        Usuario usuario = null;
        try {
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria criteria = session.createCriteria(Usuario.class);
            criteria.add(Restrictions.eq("id", id));
            usuario = (Usuario)criteria.list().get(0);
        } catch (Exception e) {}
        return usuario;
    }

    public void insert(Usuario usuario) {
        try {
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.save(usuario);
            session.getTransaction().commit();
            //session.close();
        } catch (Exception e) {}        
    }

    public void update(Usuario usuario) {
        try {
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria criteria = session.createCriteria(Usuario.class);
            criteria.add(Restrictions.eq("id", usuario.getId()));            
            session.update(usuario);
            session.getTransaction().commit();
            //session.close();
        } catch (Exception e) {}    
    }

    public void delete(Usuario usuario) {
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria criteria = session.createCriteria(Usuario.class);
            criteria.add(Restrictions.eq("id", usuario.getId()));            
            session.delete(usuario);
            session.getTransaction().commit();
    }

    public int getUsuarioCount() {
        int numeroRegistros = 0;
        try{
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria criteria = session.createCriteria(Usuario.class);
            criteria.setProjection(Projections.rowCount());
            numeroRegistros = (Integer)criteria.list().get(0);
           //session.close();
        }catch(Exception e){}
        return numeroRegistros;
    }
}
